#include "exceptiontest.h"

#ifdef Q_OS_WIN
#include <windows.h>
#endif

#include <common/logger/logger.h>
ExceptionTest::ExceptionTest(QObject* parent)
{
}
void ExceptionTest::initTestCase()
{
}
void ExceptionTest::tstException()
{
	//测试基类异常
	try
	{
		throw StdException("这是基类异常", 1001);
	}
	catch (const Exception& e)
	{
		//		QString a = "sdsdsd";
		//		LOG_DEBUG(a);
		LOG_DEBUG(e.message());
		LOG_DEBUG(e.code());
		LOG_DEBUG(e.type());
		QCOMPARE(e.message(), "这是基类异常");
		QCOMPARE(e.code(), 1001);
		QCOMPARE(e.type(), "StdException");
	}

	//测试RunningException
	try
	{
		throw RunningException("这是运行时异常");
	}
	catch (const RunningException& e)
	{

		LOG_DEBUG(e.message());
		LOG_DEBUG(e.code());
		LOG_DEBUG(e.type());
		QCOMPARE(e.message(), "这是运行时异常");
		QCOMPARE(e.code(), 2000);
		QCOMPARE(e.type(), "RunningException");
	}
}
void ExceptionTest::cleanupTestCase()
{
}

int main(int argc, char** argv)
{

	// 设置Windows控制台编码
#ifdef Q_OS_WIN
	// 设置控制台输出代码页为 UTF-8
	SetConsoleOutputCP(CP_UTF8);
	// 可选：设置控制台输入为 UTF-8
	SetConsoleCP(CP_UTF8);
#endif

	QApplication app(argc, argv);
	ExceptionTest tc;
	return QTest::qExec(&tc, argc, argv);// qExec 会把失败信息打印到 std
}